/*
 * 诚信查询
 * @author EX-XIEYUWEN001
 * Filename:    IntegrityMedicalService.java
 * Copyright:   2014 中国平安保险（集团）股份有限公司 版权所有
 * Company:     平安科技养老险及健康险系统开发部
 * Create at:   2014年10月30日
 */
package com.paic.mhis.hcpms.trust.biz.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.paic.mhis.hcpms.trust.dto.IntegrityMedicalDTO;
import com.paic.mhis.hcpms.trust.dto.IntegrityMedicalDoctorDTO;
import com.paic.mhis.hcpms.trust.dto.IntegrityMedicalOrgDTO;
import com.paic.mhis.hcpms.trust.dto.PointCutDTO;
import com.paic.mhis.hcpms.warning.dto.WarningDeductionDTO;
import com.paic.pafa.exceptions.BusinessException;

public interface IntegrityMedicalService {
	/**
	 * 医务人员诚信查询
	 * 
	 * @param paramter
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityMedical(int pageSize, int currentPage, Map<String, Object> paramMap)
			throws BusinessException;

	/**
	 * 医务人员诚信查询 - 条数
	 * 
	 * @param paramter
	 * @return
	 */
	public int countIntegrityMedical(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员诚信查询-明细
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityMedicalDesc(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员诚信查询-明细
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityAuditAndApproveMedicalDesc(Map<String, Object> paramMap)
			throws BusinessException;

	/**
	 * 医务人员诚信查询-扣分明细
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityMedicalMark(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员列表
	 * 
	 * @return
	 */
	public List<IntegrityMedicalDoctorDTO> findIntegrityDoctor(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 机构列表
	 * 
	 * @return
	 */
	public List<IntegrityMedicalOrgDTO> findIntegrityOrg(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 单条扣分接口
	 * 
	 * @param pointCuts
	 */
	public boolean addIntegrityPoint(PointCutDTO pointCut);

	/**
	 * 多条扣分接口
	 * 
	 * @param transferJson
	 *            所有操作过的记分对象
	 * @param userName
	 *            当前操作人
	 * @param coseNo
	 *            案件编号
	 * @param caseType
	 *            案件类型
	 * @return
	 * @throws BusinessException
	 */
	public boolean addIntegrityPoints(JSONObject transferJson, String userName, String coseNo, String caseType)
			throws BusinessException;

	/**
	 * 医务人员诚信查询
	 * 
	 * @param paramter
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityMedicalTotal(int pageSize, int currentPage,
			Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员诚信查询 - 条数
	 * 
	 * @param paramter
	 * @return
	 */
	public int countIntegrityMedicalTotal(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员诚信查询导出
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityMedicalReport(int pageSize, int currentPage,
			Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员诚信查询导出 - 条数
	 * 
	 * @param paramMap
	 * @return
	 */
	public int countIntegrityMedicalReport(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 多条临时扣分接口
	 * 
	 * @param transferJson
	 *            所有操作过的记分对象
	 * @param userName
	 *            当前操作人
	 * @return
	 * @throws BusinessException
	 */
	public boolean addIntegrityPointTemps(JSONObject transferJson, String userName) throws BusinessException;

	/**
	 * 扣分明细信息
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<PointCutDTO> findPointCuts(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 扣分明细临时信息
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<PointCutDTO> findPointCutTemps(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 临时扣分数据转移
	 * 
	 * @param paramMap
	 */
	public boolean addIntegrityPointTemps(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 删除扣分信息
	 * 
	 * @param JSONArray
	 */
	public boolean deletePointCut(JSONArray jsonArr) throws BusinessException;

	/**
	 * 直接扣分接口
	 * 
	 * @param pointCuts
	 */
	public boolean saveIntegrityPoints(JSONObject transferJson, String userName) throws BusinessException;

	/**
	 * 医生年度周期内已记分值
	 * 
	 * @param paramMap
	 * @return
	 * @throws BusinessException
	 */
	public String mediCalContentPoint(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 机构对象当前细则对应的考核内容项下所有细则信息
	 * 
	 * @param paramMap
	 */
	public List<WarningDeductionDTO> findIdStandardScores(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 审批前的批量记分接口
	 * 
	 * @param paramMap
	 * @return
	 */
	public boolean batchAddPointCutTemps(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 记分新增的临时信息查询
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<PointCutDTO> findPointCutStorageTemps(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 记分临时信息查询(包含暂存记分数据)
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<PointCutDTO> findPointCutStorageCollections(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 获取新增的临时大对象表临时记分数据
	 * 
	 * @param paramMap
	 * @return
	 */
	public JSONObject getPointCutTempStorageJson(Map<String, Object> paramMap);

	/**
	 * 医务人员诚信违规记分情况-明细（待修改）
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityInsuranceUpdateDesc(Map<String, Object> paramMap)
			throws BusinessException;

	/**
	 * 医务人员诚信违规记分情况-明细（待审核、待审批）
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityInsuranceAuditApproveDesc(Map<String, Object> paramMap)
			throws BusinessException;

	/**
	 * 医务人员诚信违规记分情况-明细（已结案）
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityInsuranceClosedDesc(Map<String, Object> paramMap)
			throws BusinessException;

	/**
	 * 医务人员诚信-明细（待修改、待审核、待审批）
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<IntegrityMedicalDTO> findIntegrityInsuranceDesc(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 医务人员录入记分同步临时记分值
	 * 
	 * @param paramMap
	 * @return
	 */
	public Map<String, Object> updateStorageSaveDatePoint(JSONObject transferJson, Map<String, Object> paramMap)
			throws BusinessException;

	/**
	 * 保存审核人员意见
	 * 
	 * @param paramMap
	 * @return
	 */
	public void saveAuditOpinion(Map param);

	/**
	 * 批量保存审核人员意见
	 * 
	 * @param paramMap
	 * @return
	 */
	public void saveAuditBatchOpinion(List<Map<String, String>> paramList);

	/**
	 * 保存
	 * 
	 * @param transferJson
	 * @param userName
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> saveIntegrityDoctor(JSONObject transferJson, String userName) throws BusinessException;

	/**
	 * 医务人员录入记分临时记分值 是否存在
	 * 
	 * @param paramMap
	 * @return
	 */
	public int countStorageSaveDatePoint(Map<String, Object> paramMap) throws BusinessException;

	/**
	 * 批量提交
	 * 
	 * @param paramMap
	 * @return
	 */
	public Map<String, Object> saveIntegrityDoctorBatch(JSONObject transferJson, String userName, String taskNo)
			throws BusinessException;
}
